package cc.cary.warehouse.helper;

import cc.cary.warehouse.form.PageForm;
import cc.cary.warehouse.untils.Beans;
import cc.cary.warehouse.untils.Streams;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

/**
 * 分页帮助类
 */
public class PageHelper {
    /**
     * 将page内的成员类型从这种类型转成另一种类型
     *
     * @param pages
     * @param objClz
     * @param <K>
     * @param <V>
     * @return
     */
    public static <K, V> IPage<V> coverTo(IPage<K> pages, Class<V> objClz) {
        IPage<V> targetPages = new Page<>(pages.getCurrent(), pages.getSize(), pages.getTotal());
        targetPages.setRecords(Streams.map(pages.getRecords(), v -> Beans.copy(v, objClz)));
        return targetPages;
    }

    /**
     * 从form转成Page
     *
     * @param form
     * @param <K>
     * @param <V>
     * @return
     */
    public static <K, V extends PageForm> Page<K> from(V form) {
        return new Page<>(form.getPage(), form.getPageSize());
    }

}
